import time
import threading


# 自定义一个线程类
class Worker(threading.Thread):
     def __init__(self, name):
          super().__init__()
          self.name = name

     def run(self):
          flag = 0
          for i in range(5):
               print(f"\r{self.name}:{str(flag)*5}", end="")
            # 替换0和1
               flag = flag ^ 1 
               time.sleep(0.2)

# 交替打印 00000 和 11111
def func():
     flag = 0
     while True:
          print(threading.current_thread().name, f"{flag}" * 5)
          flag = flag ^ 1 
          # 替换0和1
          time.sleep(0.5)

if __name__ == "__main__":
     t11 = Worker("线程1")
     t22 = Worker("线程2")
     t11.start()
     t22.start()


     t1 = threading.Thread(target=func, name="线程1")
     t2 = threading.Thread(target=func, name="线程2")
     t1.start()
     t2.start()




# name：线程的名称。
# daemon：线程是否为守护线程。
# ident：线程标识符。
# native_id：此线程的线程id（tid），由 OS（内核）分配。
# start()：启动线程，调用线程的 run() 方法。
# run()：定义线程的行为，默认调用传入的 target 对象。
# join([timeout=None])：阻塞主线程，直到当前线程运行完成或达到超时时间。
# is_alive()：线程是否在运行。
# threading.enumerate()：查看都有哪些线程。
# threading.current_thread()：返回当前线程实例。